import type { UserConfig } from 'vite'

import { outDir } from './paths'

export function defineBuildConfig() {
  const build: UserConfig['build'] = {
    outDir,
    emptyOutDir: true,
    cssCodeSplit: true,
    terserOptions: {
      compress: {
        // 生产环境时移除console
        drop_console: true,
        drop_debugger: true,
      },
    },
    // 关闭文件计算
    reportCompressedSize: false,
    // 这个生产环境一定要关闭，不然打包的产物会很大
    sourcemap: false,
    rollupOptions: {
      // 静态资源的打包
      output: {
        // 引入文件名的名称
        chunkFileNames: 'assets/js/[name]-[hash].js',
        // 包的入口文件名称
        entryFileNames: 'assets/js/[name]-[hash].js',
        // 资源文件像 字体，图片等
        assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
        // 最小化拆分包 - 将需要分离 的包 单独的打包出来,
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id
              .toString()
              .split('node_modules/')[1]
              .split('/')[0]
              .toString()
          }
        },
      },
    },
  }

  return build
}
